package com.zy.ems.common.javacommon.base;

import java.io.Serializable;

/**
 * 分页属性帮助类
 * <P>File name : Page.java </P>
 * <P>Author : hanweiwang </P>
 * <P>Date : 2015年9月24日 </P>
 */
public class PageEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer curPage; // 当前页

    private Integer maxPage; // 最大页

    private int totalRecord; // 总的条数

    private int pageCount; // 每页显示条数

    private long filterRecord; // mysql limit 分页时要过滤的条数

    private boolean needPading;

    public PageEntity() {
        curPage = 1;
        pageCount = 10; // 默认每页显示10条
        needPading = true; // 需要分页
    }

    /**
     * 当前页数
     * 
     * @return
     */
    public Integer getCurPage() {
        return curPage;
    }

    /**
     * 设置当前页数
     * 
     * @param curPage
     */
    public void setCurPage(Integer curPage) {
        if (curPage < 1) {
            this.curPage = 1;
        }
        else if (maxPage != null && maxPage < curPage) {
            this.curPage = maxPage;
        }
        else {
            this.curPage = curPage;
        }
        if (maxPage != null) {
            this.filterRecord = (this.curPage - 1) * this.pageCount;
        }
    }

    /**
     * 最大页数
     * 
     * @return
     */
    public Integer getMaxPage() {
        return maxPage;
    }

    /**
     * 设置最大页数
     * 
     * @return
     */
    public void setMaxPage(Integer maxPage) {
        if (maxPage > 0) {
            this.maxPage = maxPage;
        }
        else {
            this.maxPage = 1;
        }
        if (this.curPage != null) {
            this.filterRecord = (this.curPage - 1) * this.pageCount;
        }
        this.needPading = false;
    }

    /**
     * 总的条数
     * 
     * @return
     */
    public Integer getTotalRecord() {
        return totalRecord;
    }

    /**
     * 设置总的条数
     * 
     * @param totalRecord
     */
    public void setTotalRecord(Integer totalRecord) {
        this.totalRecord = totalRecord;
        setMaxPage((totalRecord - 1) / pageCount + 1);
        if (this.curPage != null && this.maxPage != null) {
            this.filterRecord = (this.curPage - 1) * this.pageCount;
        }
    }

    /**
     * 每页显示条数
     * 
     * @return
     */
    public Integer getPageCount() {
        return pageCount;
    }

    /**
     * 设置每页显示条数
     * 
     * @param pageCount
     */
    public void setPageCount(Integer pageCount) {
        this.pageCount = pageCount;
    }

    /**
     * mysql limit 分页时要过滤的条数
     * 
     * @return
     */
    public Long getFilterRecord() {
        return filterRecord;
    }

    public void setNeedPading(boolean needPading) {
        this.needPading = needPading;
    }

    /**
     * 是否需要查询分页信息（当总的条数存在时返回false,默认返回true）
     * 
     * @return
     */
    public boolean needQueryPading() {
        return this.needPading;
    }

}
